from django.http import HttpResponse, JsonResponse
from django.shortcuts import render, redirect, reverse


# Create App views here.


def my_request(request):
    """ 请求 """
    print(request)   # <WSGIRequest: GET '/'> 本质是一个HttpRequest对象
    print(request.GET)  # get请求参数，返回的是一个类字典对象  <QueryDict: {}>
    # print(request.GET['name'])        # 如果不存在，会报错
    print(request.GET.get('id', 0))   # 不存在不会报错而是返回None，如果指定了默认值则用默认值
    print(request.GET.getlist('name'))   # 若存在多个相同名字的Key，返回一个列表
    print(request.POST)  # post请求参数
    print(request.POST.get('name'))  # 获取post请求传过来的值，比如表单数据
    print(request.path)  # path请求路径（不会携带请求参数，只有路径）
    print(request.get_full_path())  # 获取全路径（会携带请求参数）

    print(request.COOKIES)  # cookie会话技术，返回一个字典
    print(request.session)  # session会话技术，返回的是一个对象django.contrib.sessions.backends.db.SessionStore
    print(request.FILES)    # 获取前端上传的文件数据

    print(request.META['REMOTE_ADDR'])   # 客户端的IP地址

    return HttpResponse('ok')


def my_response(request):
    """ 响应 """

    # 1. 返回字符串
    # return HttpResponse('ok')  # 这种情况实际企业中很少使用

    # 2. 返回模版
    # return render(request, 'index.html')

    # 3. 重定向
    # return redirect('https://www.baidu.com')  # 可以传入URL字符串
    # return redirect('/my_request/')  # 可以传入自己定义的路径URL

    # re_path = reverse('App:my_request')
    # return redirect(re_path)  # 可以和reverse搭配使用

    # 4. 返回json
    # return JsonResponse({'data': 'hello'})   # 传入一个字段，会自动解析成json传给前端

    # 可以先实例化Response对象然后给他设置一些属性
    response = HttpResponse('ok')  # 一开始content是ok
    response.content = 'hello'     # 现在content改成了hello
    response.status_code = 200     # 指定响应状态码
    return response

